package cn.dengta.webapp.user.model;

import cn.dengta.common.model.ValueProxy;
import cn.dengta.common.model.ValueProxyImpl;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;

/**
 * 用户类型
 */
@Getter
public enum UserType implements ValueProxyImpl<UserType, Integer> {
	/** 普通用户 */
	MEMBER(1, "普通用户"),
	/** 代理商 */
	AGENT(2, "代理商"),
	/** 平台管理员 */
	PLATFORM(9, "超管"),
	//
	;

	// 定义私有变量
	@EnumValue
	public final Integer value;
	final ValueProxy<UserType, Integer> proxy;

	// 构造函数，枚举类型只能为私有
	UserType(Integer value, String label) {
		this.value = value;
		this.proxy = new ValueProxy<>(this, value, label);
	}

	public static UserType[] getValues() {
		return ValueProxy.getCachedArray(UserType.class, UserType::values);
	}

	public static UserType of(Integer value) {
		return MEMBER.getValueOf(value);
	}

	/** 指定用户类型是否是平台用户 */
	public boolean isPlatform() {
		return PLATFORM == this;
	}

	/** 指定用户类型是否是推广员用户 */
	public boolean isAgent() {
		return AGENT == this;
	}

}
